package puzzle.common.view.swing;

import puzzle.common.data.AbstractBoard;
import puzzle.common.loader.AbstractLoader;
import puzzle.common.loader.AbstractProblemDictionary;
import puzzle.common.solver.AbstractSolver;

public interface PuzzleSolverAppMetadata<B extends AbstractBoard<B>> {

	String getTitle();

	AbstractProblemDictionary createBuiltinProblemDictionary();

	AbstractSolver<B, ?, ?> createSolver();

	AbstractPuzzleViewPanel<B> createPuzzleViewPanel();

	AbstractLoader<B> createLoader();

}
